<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.1">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">
  <meta name="google-site-verification" content="f2dMv_uonBUibTYgGBC3bruBCWCXc4DHAqZ5NxUfhKU">
  <meta name="msvalidate.01" content="og7GumtAYd">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"blog.infox.ren","root":"/","scheme":"Pisces","version":"7.8.0","exturl":false,"sidebar":{"position":"right","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta name="description" content="使用 Mac OS 时我个人需要设置的一些常用配置，同时也有便于提高工作效率的小技巧">
<meta property="og:type" content="article">
<meta property="og:title" content="高效工作的 Mac 环境配置">
<meta property="og:url" content="https://blog.infox.ren/2019/04/19/mac-os-setup/index.html">
<meta property="og:site_name" content="Infox">
<meta property="og:description" content="使用 Mac OS 时我个人需要设置的一些常用配置，同时也有便于提高工作效率的小技巧">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://blog.infox.ren/images/mac_os_setup/system-three-finger-drag.png">
<meta property="og:image" content="https://blog.infox.ren/images/mac_os_setup/spectacle.png">
<meta property="og:image" content="http://www.mediaatelier.com/CheatSheet/imgs/main.png">
<meta property="article:published_time" content="2019-04-19T07:30:52.000Z">
<meta property="article:modified_time" content="2020-05-15T17:39:01.902Z">
<meta property="article:author" content="宣纸">
<meta property="article:tag" content="work">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://blog.infox.ren/images/mac_os_setup/system-three-finger-drag.png">

<link rel="canonical" href="https://blog.infox.ren/2019/04/19/mac-os-setup/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-CN'
  };
</script>

  <title>高效工作的 Mac 环境配置 | Infox</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">Infox</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
      <p class="site-subtitle" itemprop="description">看。  那海中的星辰</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a>

  </li>
        <li class="menu-item menu-item-about">

    <a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a>

  </li>
  </ul>
</nav>




</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://blog.infox.ren/2019/04/19/mac-os-setup/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/user_avatar.jpg">
      <meta itemprop="name" content="宣纸">
      <meta itemprop="description" content="工程实践的一些个人积累">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Infox">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          高效工作的 Mac 环境配置
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2019-04-19 15:30:52" itemprop="dateCreated datePublished" datetime="2019-04-19T15:30:52+08:00">2019-04-19</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-05-16 01:39:01" itemprop="dateModified" datetime="2020-05-16T01:39:01+08:00">2020-05-16</time>
              </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-folder"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/os/" itemprop="url" rel="index"><span itemprop="name">os</span></a>
                </span>
            </span>

          
            <div class="post-description">使用 Mac OS 时我个人需要设置的一些常用配置，同时也有便于提高工作效率的小技巧</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p><strong><em>工欲善其事，必先利其器</em></strong><br>作为一个喜欢追求完美的程序猿，电脑是需要武装到牙齿的装备，谨以此文记录电脑的配置。</p>
<p>PS：本文只是个人备忘录。</p>
<hr>
<h2 id="Mac-OS"><a href="#Mac-OS" class="headerlink" title="Mac OS"></a>Mac OS</h2><p>Mac 系统的快捷键映射</p>
<table>
<thead>
<tr>
<th align="center">Symbol</th>
<th align="center">Key</th>
</tr>
</thead>
<tbody><tr>
<td align="center">&#8984;</td>
<td align="center">Command Key</td>
</tr>
<tr>
<td align="center">&#8963;</td>
<td align="center">Control Key</td>
</tr>
<tr>
<td align="center">&#8997;</td>
<td align="center">Option Key</td>
</tr>
<tr>
<td align="center">&#8679;</td>
<td align="center">Shift Key</td>
</tr>
</tbody></table>
<h3 id="功能键"><a href="#功能键" class="headerlink" title="功能键"></a>功能键</h3><p>默认情况下，Mac 中 <strong><em>F1-F12</em></strong> 都是特殊功能，比如调节屏幕亮度。而当你需要键入 <strong><em>F1-F12</em></strong> 时（比如在使用 IntelliJ IDEA 的快捷键时），需要同时按住 <strong><em>fn</em></strong>。</p>
<p>把 <strong><em>F1-F12</em></strong> 改成标准功能键：选择<code>System Preferences</code> &gt; <code>Keyboard</code>，在<code>Keyboard</code>标签页中选中<code>Use all F1, F2, etc. keys as standard function keys</code>。</p>
<h3 id="Spotlight-快捷键"><a href="#Spotlight-快捷键" class="headerlink" title="Spotlight 快捷键"></a>Spotlight 快捷键</h3><p>中文版 macOS 的 Spotlight 的快捷键是<code>⌃Space</code>。这个快捷键有一些问题：</p>
<ul>
<li>JetBrains 的 IDE，比如 IntelliJ IDEA、WebStorm 等都使用<code>⌃Space</code>作为自动完成这个最常用功能的快捷键。我不建议更改 IDE 的快捷键，而建议更改 Spotlight 的快捷键。</li>
<li>对于没有添加中文输入法的 Mac 来说，Spotlight 的快捷键是<code>⌘Space</code>。英语国家的人都是这样的。所以我建议把 Spotlight 的快捷键设置为<code>⌘Space</code>，跟他们一致。</li>
<li>如果安装有 <strong><em>Alfred</em></strong>，建议 Spotlight 快捷键禁用，直接设置 Alfred 快捷键为 <code>⌘Space</code>。</li>
</ul>
<h3 id="输入法快捷键"><a href="#输入法快捷键" class="headerlink" title="输入法快捷键"></a>输入法快捷键</h3><p>一般来说切换输入法的快捷键是<code>⌘Space</code>。由于 Spotlight 的快捷键设置为<code>⌘Space</code>，所以我建议把切换输入法的快捷键设置为<code>⌥Space</code>。</p>
<h3 id="其他快捷键"><a href="#其他快捷键" class="headerlink" title="其他快捷键"></a>其他快捷键</h3><p>让双手尽量多的键盘和快捷键，少使用鼠标和触摸板，可以大大提高效率。</p>
<ul>
<li><p><a href="https://support.apple.com/kb/HT201236" target="_blank" rel="noopener">Mac keyboard shortcts</a></p>
<p>苹果官方文档。当你在写代码，怎么通过快捷键让光标转移到行首、行尾、向上翻页或者将光标移左移一个词？都在这篇文档里。</p>
</li>
<li><p><a href="https://support.apple.com/kb/HT204434" target="_blank" rel="noopener">Mac keyboard shortcuts for accessibility features</a></p>
<p>苹果官方文档。回车触发蓝底按钮，空格触发蓝边按钮，都出自这里。</p>
</li>
</ul>
<h3 id="设置-Trackpad-轻点来点按"><a href="#设置-Trackpad-轻点来点按" class="headerlink" title="设置 Trackpad 轻点来点按"></a>设置 Trackpad 轻点来点按</h3><p>默认情况下按下触摸板才是点按（click）。我喜欢设置成用轻点作为点按：</p>
<p>选择<code>System Preferences</code> &gt; <code>Trackpad</code>，在<code>Point &amp; Click</code>标签页中选中<code>Tap to click</code>。</p>
<h3 id="语音"><a href="#语音" class="headerlink" title="语音"></a>语音</h3><p>macOS 自带了语音功能，可以用<code>say</code>命令让 Mac 开口说话：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">say hello</span><br></pre></td></tr></table></figure>

<p>可以和<code>&amp;&amp;</code>或者<code>;</code>配合使用来提示你某任务已经完成：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew update &amp;&amp; brew upgrade &amp;&amp; brew cleanup ; say mission complete</span><br></pre></td></tr></table></figure>

<p>通过命令行来听取发音还是有点麻烦。其实我们几乎可以在任何地方选中单词，然后使用快捷键<code>⌥+ESC</code>发音。仅仅需要这样设置一下：选择<code>System Preferences</code> &gt; <code>Accessibility</code> &gt; <code>Speech</code>，在页面中选中<code>Speak selected text when the key is pressed</code>。</p>
<h3 id="Dock-Position"><a href="#Dock-Position" class="headerlink" title="Dock Position"></a>Dock Position</h3><p>默认 Dock 在屏幕下方。我们的屏幕一般都是 16:10，Dock 在屏幕下方的话会占据本来就不大的垂直空间。建议把 Dock 放到左边或者右边。</p>
<hr>
<h3 id="更改-Caps-Lock-键为-Control-键"><a href="#更改-Caps-Lock-键为-Control-键" class="headerlink" title="更改 Caps Lock 键为 Control 键"></a>更改 Caps Lock 键为 Control 键</h3><p>我经常用到<code>Control</code>键，但这个键在键盘的左下角，很难按到。同时我发现我很少使用<code>Caps Lock</code>键，我一般会用<code>Shift</code>键加字母来输入大写字母，或者先输入小写再（通过快捷键）转换成大写。</p>
<p>基于以上原因，我把<code>Caps Lock</code>键的功能改成了<code>Control</code>键。很多同事也都这么做的，可能是受到 <a href="https://en.wikipedia.org/wiki/Happy_Hacking_Keyboard" target="_blank" rel="noopener">HHKB</a> 的影响。</p>
<p>设置方法：选择<code>System Preferences</code> &gt; <code>Keyboard</code>，在<code>Keyboard</code>标签页中点击<code>Modifier Keys...</code>按钮，在弹出的窗口中，把<code>Caps Lock (⇪) Key:</code>对应的选项改成<code>⌃ Control</code>。</p>
<h3 id="Remove-all-Dock-icons-OCD"><a href="#Remove-all-Dock-icons-OCD" class="headerlink" title="Remove all Dock icons[OCD]"></a>Remove all Dock icons[OCD]</h3><p>本条目对于强迫症适用。</p>
<p>默认情况下 Dock 被一堆系统自带的应用占据着，而其中大部分我都很少使用，当我打开几个常用应用后，Dock 上会有很多图标，每个图标都会被挤得很小。所以我会把所有 Dock 上固定的图标都删掉，这样一来 Dock 上只有我打开的应用。</p>
<p>PS：Finder 图标是删不掉的。</p>
<p>除了一个一个删除图标，也可以通过这个命令来隐藏所有的固定图标：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">defaults write com.apple.dock static-only -boolean <span class="literal">true</span>; killall Dock</span><br></pre></td></tr></table></figure>

<p>恢复也非常简单：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">defaults delete com.apple.dock static-only; killall Dock</span><br></pre></td></tr></table></figure>

<p>PS：使用这个方法的话，Dock 上的<code>Downloads</code>也会被隐藏掉。</p>
<h3 id="重置-Launchpad-上图标位置-OCD"><a href="#重置-Launchpad-上图标位置-OCD" class="headerlink" title="重置 Launchpad 上图标位置[OCD]"></a>重置 Launchpad 上图标位置[OCD]</h3><p>本条目对于强迫症适用。</p>
<p>新的应用被安装后，经常会跑到 Launchpad 的第一屏，所以它们的位置跟安装的顺序有关系，而我更希望它们可以按照某种更加稳定的顺序排列，比如按照系统默认的顺序：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">defaults write com.apple.dock ResetLaunchPad -bool <span class="literal">true</span>; killall Dock</span><br></pre></td></tr></table></figure>

<p>在默认顺序中，Launchpad 第一屏只有 Apple 自家应用。</p>
<h3 id="创建大小写敏感的工作区"><a href="#创建大小写敏感的工作区" class="headerlink" title="创建大小写敏感的工作区"></a>创建大小写敏感的工作区</h3><p>在多人合作的项目开发时，因为 Mac 文件系统默认是大小写不敏感的，所以经常会出现一些诡异的问题。创建一个大小写敏感的工作区（workspace）来解决避免这些问题：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hdiutil create -<span class="built_in">type</span> SPARSE -fs <span class="string">'Case-sensitive Journaled HFS+'</span> -size 100g -volname workspace ~/Documents/workspace.dmg.sparseimage</span><br></pre></td></tr></table></figure>

<p>可以通过三种方式挂载镜像：</p>
<ol>
<li>直接双击打开 <code>~/Documents/workspace.dmg.sparseimage</code></li>
<li><code>open ~/Documents/workspace.dmg.sparseimage</code></li>
<li><code>hdiutil attach ~/Documents/workspace.dmg.sparseimage</code></li>
</ol>
<h3 id="Keychain-Access"><a href="#Keychain-Access" class="headerlink" title="Keychain Access"></a>Keychain Access</h3><p>钥匙串访问（Keychain Access）是一个 macOS 应用程序，对我来说它最大的功能就是查看已经保存的各种账号和密码，包括 Wi-Fi 密码。</p>
<h2 id="常用工具"><a href="#常用工具" class="headerlink" title="常用工具"></a>常用工具</h2><p>本节介绍一些常用的，跟开发没有直接关系的第三方应用及其设置。</p>
<h3 id="Homebrew"><a href="#Homebrew" class="headerlink" title="Homebrew"></a><a href="http://brew.sh" target="_blank" rel="noopener">Homebrew</a></h3><p>包管理工具，官方称之为<code>The missing package manager for macOS</code>。</p>
<p>安装步骤见官网。</p>
<p>有了 brew 以后，要下载工具，比如 Gradle、Maven、Node.js 等工具，就不需要去网上下载了，只要一行命令就能搞定：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install gradle maven node</span><br></pre></td></tr></table></figure>

<p>PS：安装 brew 的时候会自动下载和安装 Apple 的 Command Line Tools。</p>
<h3 id="Homebrew-Cask"><a href="#Homebrew-Cask" class="headerlink" title="Homebrew Cask"></a><a href="https://caskroom.github.io" target="_blank" rel="noopener">Homebrew Cask</a></h3><p>brew-cask 允许你使用命令行安装 macOS 应用。比如你可以这样安装 Chrome：<code>brew cask install google-chrome</code>。</p>
<p>brew-cask 是社区驱动的，如果你发现 brew-cask 上的应用不是最新版本，或者缺少你某个应用，你可以自己提交 pull request。</p>
<p>安装步骤见官网。</p>
<p>应用也可以通过 App Store 安装，而且有些应用只能通过 App Store 安装，比如 Xcode 等一些 Apple 的应用。App Store 没有对应的命令行工具，还需要 Apple ID。倒是更新起来很方便。</p>
<p>几乎所有常用的应用都可以通过 brew-cask 安装，而且是从应用的官网上下载，所以你要安装新的应用时，建议用 brew-cask 安装。如果你不知道应用在 brew-cask 中的 ID，可以先用<code>brew search</code>命令搜索。</p>
<h3 id="iTerm2"><a href="#iTerm2" class="headerlink" title="iTerm2"></a><a href="https://www.iterm2.com/" target="_blank" rel="noopener">iTerm2</a></h3><p>iTerm2 是最常用的终端应用，是 Terminal 应用的替代品。提供了诸如<code>Split Panes</code>等<a href="https://www.iterm2.com/features.html" target="_blank" rel="noopener">一群实用特性</a>。它默认的黑色背景让我毫不犹豫的抛弃了 Terminal。</p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install iterm2</span><br></pre></td></tr></table></figure>

<p>感谢 brew-cask，我们可以通过命令行自动安装 iTerm2 了。</p>
<p>在终端里，除了可以用<code>⌃E</code>等快捷键（详见<a href="#其他快捷键">其他快捷键</a>）之外，还可以使用<code>⌥B</code>、<code>⌥F</code>等快捷键（具体可以参考<a href="http://ss64.com/bash/syntax-keyboard.html" target="_blank" rel="noopener">这里</a>）。前提是这样设置一下：</p>
<p>选择<code>Iterm</code>菜单 &gt; <code>Preferences</code> &gt; <code>Profiles</code>，选择你在使用的 Profile（默认是<code>Default</code>），在<code>Keys</code>标签页中把<code>Left option (⌥) key acts as</code>和<code>Right option (⌥) key acts as</code>都设置成<code>+ESC</code>。</p>
<p>在打开新的窗口/标签页的时候，默认情况下新窗口总是 HOME 目录，还需要我每次敲命令才能进入工作目录。如果想要这个新窗口在打开的时候就自动进入工作目录，需要如下设置：</p>
<p>选择<code>Iterm</code>菜单 &gt; <code>Preferences</code> &gt; <code>Profiles</code>，选择你在使用的 Profile（默认是Default），在<code>General</code>标签页中的<code>Working Directory</code>部分中选择<code>Reuse previous seesion&#39;s directory</code>。</p>
<p>至此，Terminal 应用已经出色的完成了其历史使命。后面命令行就交给 iTerm2 啦。</p>
<p>在 iTerm2 中双击会自动选中对应的词，三击会选中对应的整行。选中的内容会自动进入剪贴板，不需要再按<code>⌘C</code>复制。</p>
<h3 id="Oh-My-Zsh"><a href="#Oh-My-Zsh" class="headerlink" title="Oh My Zsh"></a><a href="http://ohmyz.sh" target="_blank" rel="noopener">Oh My Zsh</a></h3><p>默认的 Bash 是黑白的，没有色彩。而 Oh My Zsh 可以带你进入彩色时代。Oh My Zsh 同时提供一套插件和工具，可以简化命令行操作。后面我们会看到很多介绍，你会看到我爱死这家伙了。</p>
<p>安装方法见官网。</p>
<p>目前我使用的插件有：<code>git z sublime history rbenv bundler rake</code></p>
<p>Oh My Zsh 使用了 Z shell（zsh），一个和 Bash 相似的 Shell，而非 Bash。</p>
<p>在 Z shell 中，<code>~/.zshrc</code>是最重要的配置文件。Oh My Zsh 在安装的时候会把当前环境的<code>$PATH</code>写入<code>~/.zshrc</code>中。这并不是我期望的行为，因为使用了 brew，我们基本不再需要去定制<code>$PATH</code>，而 Oh My Zsh 提供的默认<code>$PATH</code>值<code>$HOME/bin:/usr/local/bin:$PATH</code>是非常合适的一个值，它把<code>$HOME/bin</code>加入了<code>$PATH</code>，可以让我们把自己用的脚本放到<code>$HOME/bin</code>下。</p>
<p>所以建议把<code>~/.zshrc</code>重置：</p>
<figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc</span><br></pre></td></tr></table></figure>

<p>Oh My Zsh 还有很多<a href="https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins-Overview" target="_blank" rel="noopener">有价值的插件</a>。</p>
<h3 id="Git-常用别名"><a href="#Git-常用别名" class="headerlink" title="Git 常用别名"></a>Git 常用别名</h3><p>几乎每个人都会使用一些方法比如 Git 别名来提高效率，几乎所有人都会把使用<code>git st</code>来代替<code>git status</code>。然而这需要手动设置，每个人也都不完全一样。</p>
<p>Oh My Zsh 提供了一套系统别名（alias），来达到相同的功能。比如<code>gst</code>作为<code>git status</code>的别名。而且 Git 插件是 Oh My Zsh 默认启用的，相当于你使用了 Oh My Zsh，你就拥有了一套高效率的别名，而且还是全球通用的。是不是棒棒哒？下面是一些我常用的别名：</p>
<table>
<thead>
<tr>
<th>Alias</th>
<th>Command</th>
</tr>
</thead>
<tbody><tr>
<td>gapa</td>
<td><code>git add --patch</code></td>
</tr>
<tr>
<td>gc!</td>
<td><code>git commit -v --amend</code></td>
</tr>
<tr>
<td>gcl</td>
<td><code>git clone --recurse-submodules</code></td>
</tr>
<tr>
<td>gclean</td>
<td><code>git clean -id</code></td>
</tr>
<tr>
<td>gcm</td>
<td><code>git checkout master</code></td>
</tr>
<tr>
<td>gcmsg</td>
<td><code>git commit -m</code></td>
</tr>
<tr>
<td>gco</td>
<td><code>git checkout</code></td>
</tr>
<tr>
<td>gd</td>
<td><code>git diff</code></td>
</tr>
<tr>
<td>gdca</td>
<td><code>git diff --cached</code></td>
</tr>
<tr>
<td>glola</td>
<td><code>git log --graph --pretty=&#39;%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)&lt;%an&gt;%Creset&#39; --al</code></td>
</tr>
<tr>
<td>gp</td>
<td><code>git push</code></td>
</tr>
<tr>
<td>grbc</td>
<td><code>git rebase --continue</code></td>
</tr>
<tr>
<td>gst</td>
<td><code>git status</code></td>
</tr>
<tr>
<td>gup</td>
<td><code>git pull --rebase</code></td>
</tr>
<tr>
<td>gwip</td>
<td><code>git add -A; git rm $(git ls-files --deleted) 2&gt; /dev/null; git commit --no-verify --no-gpg-sign -m &quot;--wip-- [skip ci]&quot;</code></td>
</tr>
</tbody></table>
<p>完整列表请参考 <a href="https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/README.md" target="_blank" rel="noopener">快捷键</a></p>
<h3 id="Three-finger-drag"><a href="#Three-finger-drag" class="headerlink" title="Three finger drag"></a>Three finger drag</h3><p><img src="/images/mac_os_setup/system-three-finger-drag.png" alt="三指拖拽设置"></p>
<h3 id="Scroll-Reverser"><a href="#Scroll-Reverser" class="headerlink" title="Scroll Reverser"></a>Scroll Reverser</h3><p>当你在浏览一个很长的网页时，你看完了当前显示的内容，想要看后续的内容，你可以在 Trackpad 上双指上滑，或者鼠标滚轮向上滚动。这是被称作“自然”的滚动方向。</p>
<p>然而在 Windows 里鼠标滚动的行为是相反的：鼠标滚轮向下滚动才会让浏览器显示后续的内容，向上滚动会达到页面的顶部。你可以在 macOS 的系统偏好设置里修改（选择<code>System Preferences</code> &gt; <code>Trackpad</code>，在<code>Scroll &amp; Zoom</code>标签页中不选中<code>Scroll direction: natural</code>），但是这样会同时改变鼠标滚轮的方向和 Trackpad 的方向。</p>
<p>要想只改变鼠标滚轮的方向，而保持 Trackpad 依旧是“自然”的，我们需要 Scroll Reverser：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install scroll-reverser</span><br></pre></td></tr></table></figure>

<p>PS：这货会让三指点击失效</p>
<h3 id="Spectacle"><a href="#Spectacle" class="headerlink" title="Spectacle"></a>Spectacle</h3><p>原生 macOS 下只能手动调整窗口大小，所以我们需要窗口管理工具。个人习惯使用 Spectacle。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install spectacle</span><br></pre></td></tr></table></figure>

<p><img src="/images/mac_os_setup/spectacle.png" alt="快捷键配置"></p>
<h3 id="Visual-Studio-Code"><a href="#Visual-Studio-Code" class="headerlink" title="Visual Studio Code"></a>Visual Studio Code</h3><p>Visual Studio Code 是文本编辑工具。由于各种各样的插件，可以满足日常的各种需求。</p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install visual-studio-code</span><br></pre></td></tr></table></figure>

<p>常用插件有 markdown-preview-enhanced, git 插件等。</p>
<h3 id="z"><a href="#z" class="headerlink" title="z"></a>z</h3><p>在打开终端后，你是怎么进入项目的工作目录？是<code>cd xxx</code>，<code>⌃R</code>还是用别名？</p>
<p><a href="https://github.com/rupa/z" target="_blank" rel="noopener">z</a> 工具可以帮你快速进入目录。比如在我的 Mac 上运行<code>z cask</code>就会进入<code>/usr/local/Library/Taps/caskroom/homebrew-cask/Casks</code>目录。</p>
<p>这货的安装非常方便，甚至都不需要下载任何东西，因为它已经整合在了 Oh My Zsh 中。编辑<code>~/.zshrc</code>文件，在<code>plugins=(git)</code>这行中加上<code>z</code>变成<code>plugins=(git z)</code>，然后运行<code>source ~/.zshrc</code>重新加载配置文件，就可以使用 z 了。</p>
<h3 id="Vimium"><a href="#Vimium" class="headerlink" title="Vimium"></a><a href="https://vimium.github.io/" target="_blank" rel="noopener">Vimium</a></h3><p>Vimium 是一个 Google Chrome 扩展，让你可以纯键盘操作 Chrome，把你的 Chrome 变成“黑客的浏览器”。</p>
<p>安装方法请参考官方网站。</p>
<p>其他浏览器也有类似的工具，比如 FireFox 的 <a href="https://github.com/mooz/keysnail" target="_blank" rel="noopener">KeySnail</a>。</p>
<h3 id="LastPass"><a href="#LastPass" class="headerlink" title="LastPass"></a><a href="https://lastpass.com" target="_blank" rel="noopener">LastPass</a></h3><p>LastPass 是管理密码的工具，支持二次验证，提供所有浏览器插件以及 Mac 桌面版本。</p>
<p>最重要的是，它提供 <strong>命令行</strong> 的版本，可以直接通过 brew 安装</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install lastpass-cli --with-pinentry</span><br></pre></td></tr></table></figure>

<p>之后，只需要登陆：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lpass login you@email.com</span><br></pre></td></tr></table></figure>

<p>就可以拷贝密码或者集成到其他命令中了：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">lpass show --password gmail.com -c</span><br></pre></td></tr></table></figure>

<h3 id="SourceTree"><a href="#SourceTree" class="headerlink" title="SourceTree"></a><a href="https://www.sourcetreeapp.com/" target="_blank" rel="noopener">SourceTree</a></h3><p>SourceTree 是 Atlassian 公司出品的一款优秀的 Git 图形化客户端。如果你发现命令行无法满足你的要求，可以试试 SourceTree。</p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install sourcetree</span><br></pre></td></tr></table></figure>

<p>用 brew-cask 安装会自动增加命令行工具<code>stree</code>到<code>$PATH</code>里。在命令行中输入<code>stree</code>可以快速用 SourceTree 打开当前 Git 仓库。详细用法请参见<code>stree --help</code>。</p>
<h3 id="CheatSheet"><a href="#CheatSheet" class="headerlink" title="CheatSheet"></a><a href="http://www.mediaatelier.com/CheatSheet/" target="_blank" rel="noopener">CheatSheet</a></h3><p>CheatSheet 能够显示当前程序的快捷键列表，默认的快捷键是长按<code>⌘</code>。</p>
<p><img src="http://www.mediaatelier.com/CheatSheet/imgs/main.png" alt="CheatSheet"></p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install cheatsheet</span><br></pre></td></tr></table></figure>

<h3 id="Alfred"><a href="#Alfred" class="headerlink" title="Alfred"></a><a href="https://www.alfredapp.com" target="_blank" rel="noopener">Alfred</a></h3><p>Mac 用户不用鼠标键盘的必备神器，配合大量 Workflows，习惯之后可以大大减少操作时间。</p>
<p>上手简单，调教成本在后期自定义 Workflows，不过有大量雷锋使用者提供的现成扩展，访问<a href="http://www.alfredworkflow.com/" target="_blank" rel="noopener">这里</a>挑选喜欢的，并可以极其简单地根据自己的需要修改。</p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install alfred</span><br></pre></td></tr></table></figure>

<h3 id="Stow"><a href="#Stow" class="headerlink" title="Stow"></a><a href="http://www.gnu.org/software/stow/" target="_blank" rel="noopener">Stow</a></h3><p>GNU Stow 是管理符号链接（symlink）的一个小公举。主要用于 symlink 你的 <a href="http://dotfiles.github.io/" target="_blank" rel="noopener">dotfiles</a> 如 Emacs、Git、fish shell/Zsh 的配置文件。安装只需要</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install stow</span><br></pre></td></tr></table></figure>

<p>安装了 stow 之后，我们可以开始 symlink 一些 dotfiles 了。完整使用 stow 和 dotfiles 的流程可以参考 <a href="https://github.com/jcouyang/dotfiles" target="_blank" rel="noopener">https://github.com/jcouyang/dotfiles</a></p>
<p>当你的 dotfiles 都妥妥的 symlink 到 <code>~/dotfiles</code> 后，push 到 github 上就再也不怕换电脑了。</p>
<h2 id="开发工具"><a href="#开发工具" class="headerlink" title="开发工具"></a>开发工具</h2><h3 id="Java"><a href="#Java" class="headerlink" title="Java"></a>Java</h3><p>macOS 都不会自带 JDK 了，所以进行 Java 开发的话，需要下载 JDK。在 brew-cask 之前，我们需要从 <a href="https://developer.apple.com/downloads/" target="_blank" rel="noopener">https://developer.apple.com/downloads/</a> 或者 Oracle 网站上下载。还有更麻烦的－－卸载 JDK 和升级 JDK。</p>
<p>JDK 安装文件是 pkg 格式，卸载和<code>.app</code>不一样，且没有自动卸载方式。</p>
<p>而 brew-cask 提供了自动安装和卸载功能，能够自动从官网上下载并安装最新的 JDK。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install java</span><br></pre></td></tr></table></figure>

<p>如果你需要安装 JDK 11 或者 JDK 6，可以使用 <a href="https://github.com/Homebrew/homebrew-cask-versions" target="_blank" rel="noopener">homebrew-cask-versions</a>：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">brew tap homebrew/cask-versions</span><br><span class="line">brew cask install java11</span><br></pre></td></tr></table></figure>

<p>在 macOS 上，你可以同时安装多个版本的 JDK。你可以通过命令<code>/usr/libexec/java_home -V</code>来查看安装了哪几个 JDK。</p>
<p>那问题来了，当你运行<code>java</code>或者 Java 程序时使用的是哪个 JDK 呢？在 macOS 下，<code>java</code>也就是<code>/usr/bin/java</code>在默认情况下指向的是已经安装的最新版本。但是你可以设置环境变量<code>JAVA_HOME</code>来更改其指向：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">$ java -version</span><br><span class="line">java version <span class="string">"1.8.0_60"</span></span><br><span class="line">Java(TM) SE Runtime Environment (build 1.8.0_60-b27)</span><br><span class="line">Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)</span><br><span class="line">$ JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home java -version</span><br><span class="line">java version <span class="string">"1.6.0_65"</span></span><br><span class="line">Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)</span><br><span class="line">Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)</span><br></pre></td></tr></table></figure>

<p>其中<code>JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home</code>可以用<code>JAVA_HOME=`/usr/libexec/java_home -v 1.6`</code>这种更加通用的方式代替。</p>
<p>需要 JDK 8/9？很遗憾，由于一些原因（<a href="https://github.com/Homebrew/homebrew-cask-versions/issues/7253" target="_blank" rel="noopener">Java8 not working anymore</a>），brew-cask 不再提供 Oracle JDK 这些版本的安装。不过你可以尝试 <a href="https://github.com/AdoptOpenJDK/homebrew-openjdk" target="_blank" rel="noopener">AdoptOpenJDK</a>，或者从 <a href="https://www.oracle.com" target="_blank" rel="noopener">Oracle</a> 官网手工下载安装。</p>
<h3 id="IntelliJ-IDEA"><a href="#IntelliJ-IDEA" class="headerlink" title="IntelliJ IDEA"></a>IntelliJ IDEA</h3><p>Java 开发必备工具 IntelliJ IDEA。可以安装 Ultimate Edition：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install intellij-idea</span><br></pre></td></tr></table></figure>

<p>也可以安装开源免费的 Community Edition：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install intellij-idea-ce</span><br></pre></td></tr></table></figure>

<p>IntelliJ IDEA 有几套内建的快捷键方案（Keymap）。其中适用于 macOS 的有<code>Mac OS X</code>和<code>Mac OS X 10.5+</code>两种。区别是:</p>
<ul>
<li><code>Mac OS X</code>方案和其他平台上的快捷键类似，</li>
<li>而<code>Mac OS X 10.5+</code>更加符合 macOS 常用的快捷键。</li>
</ul>
<p>一个团队使用不同的快捷键会严重影响效率。可以用<code>View | Quick Switch Scheme</code>（<code>⌃ Back Quote</code>）快速切换 Keymap。</p>
<p>如果可以选择的话，我建议使用<code>Mac OS X</code>方案。因为我经常遇到使用 Windows 的客户，而 Windows 平台上的快捷键和<code>Mac OS X</code>方案类似。</p>
<p>可以从 IDEA 的<code>Help &gt; Default Keymap Reference</code>打开快捷键的参考手册。不过从这里打开的是<code>Mac OS X 10.5+</code>方案的，而<code>Mac OS X</code>方案的可以从这里找到：<a href="http://www.basrikahveci.com/static/ij_keymap_mac.pdf" target="_blank" rel="noopener">http://www.basrikahveci.com/static/ij_keymap_mac.pdf</a>。</p>
<h3 id="rbenv"><a href="#rbenv" class="headerlink" title="rbenv"></a><a href="https://github.com/sstephenson/rbenv" target="_blank" rel="noopener">rbenv</a></h3><p>人人都需要一个 Ruby 版本管理工具。rbenv 就是这样一个轻量级工具，它可以通过 brew 安装。</p>
<p>安装：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install rbenv ruby-build</span><br></pre></td></tr></table></figure>

<p>然后在<code>~/.zshrc</code>中加上<code>rbenv</code>插件。否则你需要手动添加<code>eval &quot;$(rbenv init -)&quot;</code>到<code>~/zshrc</code>或者<code>~/.zprofile</code>文件里。</p>
<p>有时候项目会依赖一些奇怪的版本号，比如<code>ruby-2.1.0</code>，这个时候你需要 <a href="https://github.com/tpope/rbenv-aliases" target="_blank" rel="noopener">rbenv-aliases</a> 帮忙：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install rbenv-aliases</span><br></pre></td></tr></table></figure>

<p>替代品 chruby 也是一个轻量级工具，而且可以完美的和 Oh My Zsh 集成在一起，我看到有些生产环境在用它。</p>
<h3 id="Ruby-常用别名"><a href="#Ruby-常用别名" class="headerlink" title="Ruby 常用别名"></a>Ruby 常用别名</h3><p>几乎所有 Ruby 开发人员都会把<code>bi</code>作为<code>bundle install</code>的别名。Oh My Zsh 提供<code>builder</code>插件，这个插件提供了一套别名，比如<code>bi</code>、<code>be</code>。同时还能让你在运行一些常用 gem 的时候直接输入<code>rspec</code>，不需要<code>be rspec</code>这样了。具体包括哪些命令请参考<a href="https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/bundler" target="_blank" rel="noopener">这里</a>。</p>
<p>Z shell 对于<code>[</code>和<code>]</code>符号有特殊的处理，所以在运行<code>rake task[parameter]</code>的时候会报错，你需要改成<code>rake task\[parameter\]</code>或者<code>noglob rake task[parameter]</code>。然而 Oh My Zsh 已经看穿这一切，自带的 rake 插件已经解决了这个问题：<code>brake task[parameter]</code>。</p>
<p>添加插件的时候注意把<code>rake</code>放到<code>bundler</code>后面，例如这样：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">plugins=(git z sublime <span class="built_in">history</span> rbenv bundler rake)</span><br></pre></td></tr></table></figure>

<h3 id="Node-版本管理"><a href="#Node-版本管理" class="headerlink" title="Node 版本管理"></a>Node 版本管理</h3><p>Node 的版本管理工具有很多，常用的会有以下几个：</p>
<ul>
<li><p><a href="https://github.com/nodenv/nodenv" target="_blank" rel="noopener">nodenv</a></p>
<p>该工具是一个类似 rbenv 的工具，命令和其完全一样，安装和配置也一样。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install nodenv</span><br></pre></td></tr></table></figure>

<p>你需要手动添加以下配置到<code>~/.zshrc</code>或者<code>~/.zprofile</code>文件里。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> PATH=<span class="string">"<span class="variable">$HOME</span>/.nodenv/bin:<span class="variable">$PATH</span>"</span></span><br><span class="line"><span class="built_in">eval</span> <span class="string">"<span class="variable">$(nodenv init -)</span>"</span></span><br></pre></td></tr></table></figure>
</li>
<li><p><a href="https://github.com/tj/n" target="_blank" rel="noopener">n</a></p>
<p>一个简单的工具，安装简单，无需额外配置。具体参考官方文档。</p>
</li>
</ul>
<h2 id="系统必备工具"><a href="#系统必备工具" class="headerlink" title="系统必备工具"></a>系统必备工具</h2><h3 id="flux"><a href="#flux" class="headerlink" title="flux"></a><a href="https://justgetflux.com/" target="_blank" rel="noopener">flux</a></h3><p>  帮助你保护自己眼睛，动态调节电脑显示效果</p>
  <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install flux</span><br></pre></td></tr></table></figure>

<h3 id="The-Unarchiver"><a href="#The-Unarchiver" class="headerlink" title="The Unarchiver"></a><a href="https://theunarchiver.com/" target="_blank" rel="noopener">The Unarchiver</a></h3><p>  免费的解压工具</p>
  <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install the-unarchiver</span><br></pre></td></tr></table></figure>

<h3 id="iina"><a href="#iina" class="headerlink" title="iina"></a><a href="https://iina.io/" target="_blank" rel="noopener">iina</a></h3><p>  简洁的 mac media player。</p>
  <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew cask install iina</span><br></pre></td></tr></table></figure>

<h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><blockquote>
<p><a href="http://insights.thoughtworkers.org/ocds-guide-to-setting-up-mac" target="_blank" rel="noopener">ocds-guide-to-setting-up-mac</a></p>
</blockquote>

    </div>

    
    
    

      <footer class="post-footer">
          <div class="post-tags">
              <a href="/tags/work/" rel="tag"># work</a>
          </div>

        


        
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
          <div class="post-toc motion-element"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#Mac-OS"><span class="nav-number">1.</span> <span class="nav-text">Mac OS</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#功能键"><span class="nav-number">1.1.</span> <span class="nav-text">功能键</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Spotlight-快捷键"><span class="nav-number">1.2.</span> <span class="nav-text">Spotlight 快捷键</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#输入法快捷键"><span class="nav-number">1.3.</span> <span class="nav-text">输入法快捷键</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#其他快捷键"><span class="nav-number">1.4.</span> <span class="nav-text">其他快捷键</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#设置-Trackpad-轻点来点按"><span class="nav-number">1.5.</span> <span class="nav-text">设置 Trackpad 轻点来点按</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#语音"><span class="nav-number">1.6.</span> <span class="nav-text">语音</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Dock-Position"><span class="nav-number">1.7.</span> <span class="nav-text">Dock Position</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#更改-Caps-Lock-键为-Control-键"><span class="nav-number">1.8.</span> <span class="nav-text">更改 Caps Lock 键为 Control 键</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Remove-all-Dock-icons-OCD"><span class="nav-number">1.9.</span> <span class="nav-text">Remove all Dock icons[OCD]</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#重置-Launchpad-上图标位置-OCD"><span class="nav-number">1.10.</span> <span class="nav-text">重置 Launchpad 上图标位置[OCD]</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#创建大小写敏感的工作区"><span class="nav-number">1.11.</span> <span class="nav-text">创建大小写敏感的工作区</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Keychain-Access"><span class="nav-number">1.12.</span> <span class="nav-text">Keychain Access</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#常用工具"><span class="nav-number">2.</span> <span class="nav-text">常用工具</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Homebrew"><span class="nav-number">2.1.</span> <span class="nav-text">Homebrew</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Homebrew-Cask"><span class="nav-number">2.2.</span> <span class="nav-text">Homebrew Cask</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#iTerm2"><span class="nav-number">2.3.</span> <span class="nav-text">iTerm2</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Oh-My-Zsh"><span class="nav-number">2.4.</span> <span class="nav-text">Oh My Zsh</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Git-常用别名"><span class="nav-number">2.5.</span> <span class="nav-text">Git 常用别名</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Three-finger-drag"><span class="nav-number">2.6.</span> <span class="nav-text">Three finger drag</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Scroll-Reverser"><span class="nav-number">2.7.</span> <span class="nav-text">Scroll Reverser</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Spectacle"><span class="nav-number">2.8.</span> <span class="nav-text">Spectacle</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Visual-Studio-Code"><span class="nav-number">2.9.</span> <span class="nav-text">Visual Studio Code</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#z"><span class="nav-number">2.10.</span> <span class="nav-text">z</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Vimium"><span class="nav-number">2.11.</span> <span class="nav-text">Vimium</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#LastPass"><span class="nav-number">2.12.</span> <span class="nav-text">LastPass</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#SourceTree"><span class="nav-number">2.13.</span> <span class="nav-text">SourceTree</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#CheatSheet"><span class="nav-number">2.14.</span> <span class="nav-text">CheatSheet</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Alfred"><span class="nav-number">2.15.</span> <span class="nav-text">Alfred</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Stow"><span class="nav-number">2.16.</span> <span class="nav-text">Stow</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#开发工具"><span class="nav-number">3.</span> <span class="nav-text">开发工具</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Java"><span class="nav-number">3.1.</span> <span class="nav-text">Java</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#IntelliJ-IDEA"><span class="nav-number">3.2.</span> <span class="nav-text">IntelliJ IDEA</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#rbenv"><span class="nav-number">3.3.</span> <span class="nav-text">rbenv</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Ruby-常用别名"><span class="nav-number">3.4.</span> <span class="nav-text">Ruby 常用别名</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#Node-版本管理"><span class="nav-number">3.5.</span> <span class="nav-text">Node 版本管理</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#系统必备工具"><span class="nav-number">4.</span> <span class="nav-text">系统必备工具</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#flux"><span class="nav-number">4.1.</span> <span class="nav-text">flux</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#The-Unarchiver"><span class="nav-number">4.2.</span> <span class="nav-text">The Unarchiver</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#iina"><span class="nav-number">4.3.</span> <span class="nav-text">iina</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#参考资料"><span class="nav-number">5.</span> <span class="nav-text">参考资料</span></a></li></ol></div>
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="宣纸"
      src="/images/user_avatar.jpg">
  <p class="site-author-name" itemprop="name">宣纸</p>
  <div class="site-description" itemprop="description">工程实践的一些个人积累</div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">1</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">1</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">1</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        
  <div class="beian"><a href="http://www.beian.miit.gov.cn/" rel="noopener" target="_blank">陕ICP备19001669号 </a>
      <img src="/images/beian.png" style="display: inline-block;">
  </div>

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">宣纸</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://pisces.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Pisces</a> 强力驱动
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/pisces.js"></script>


<script src="/js/next-boot.js"></script>




  















  

  

</body>
</html>
